package com.sztx.pay.center.core.service;

import com.sztx.pay.center.core.service.bean.BatchPayCoreTransferReq;
import com.sztx.pay.center.core.service.bean.PayCoreAccountInfo;
import com.sztx.pay.center.core.service.bean.PayCoreBalancePay;
import com.sztx.pay.center.core.service.bean.PayCoreDistribute;
import com.sztx.pay.center.core.service.bean.PayCoreRefund;
import com.sztx.pay.center.core.service.bean.PayCoreResult;
import com.sztx.pay.center.core.service.bean.PayCoreTransfer;
import com.sztx.pay.center.core.service.bean.PayCoreTransferReq;
import com.sztx.pay.center.core.service.bean.TradeInfo;
import com.sztx.se.core.service.BaseService;
import com.sztx.trade.payment.gateway.rpc.api.service.distribute.RespDistribute;
import com.sztx.trade.payment.gateway.rpc.api.service.refund.RespRefund;
import com.sztx.trade.payment.gateway.rpc.api.service.trade.RespTrade;
import com.sztx.trade.payment.gateway.rpc.api.service.transfer.RespTransfer;

/**
 * 支付相关的原子操作
 * <一句话功能简述>
 * <功能详细描述>
 * 
 * @author  xiaosc
 * @version  [版本号, 2016年1月26日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */

public interface PayCoreService extends BaseService {
	
	//支付
	PayCoreResult pay(PayCoreAccountInfo payerAccount, TradeInfo tradeInfo, String serviceName);
	PayCoreResult handPayResult(RespTrade result, boolean callOrder);
	
	PayCoreResult verifyQuickPayTrade(String orderId, String verifyCode);
	
	//转账
	PayCoreResult transfer(PayCoreTransfer payCoreTransfer, String serviceName,String originOrderId);	
	PayCoreResult handTransferResult(RespTransfer result, boolean callOrder);
	
	//批量转账
//	PayCoreBatchTransferResult batchTransfer(PayCoreBatchTransfer payCoreBatchTransfer, String serviceName);
//	PayCoreBatchTransferResult handBatchTransferResult(RespBatchTransfer result, boolean callOrder);
	
	//代发
	PayCoreResult distribute(PayCoreDistribute payCoreDistribute, String serviceName);
	PayCoreResult handDistributeResult(RespDistribute result, boolean callOrder);
	
	//退款
	PayCoreResult refund(PayCoreRefund refund, String serviceName);
	PayCoreResult handRefundResult(RespRefund result, boolean callOrder);
	
	//重新发送快捷支付绑卡短信
	void resendQuickVC(String referOrderId);
	
	//通行余额支付
	void balancePay(PayCoreBalancePay balancePay);
	
	//余额转账
	void balanceTransfer(PayCoreTransferReq req);
	
	//批量余额转账
	void batchBalanceTransfer(BatchPayCoreTransferReq req);
	
	//结算
//	void settle(PayCoreSettleReq req);
	
	
	
	
	
	
	
}
